<?php

include_once '../model/Categoria.php';
include_once '../model/Item.php';
include_once '../daos/CategoriaDao.php';
include_once '../commons/Constants.php';

class ItemController {

    public function __construct() {
        
    }

    public function listar() {

        session_start();

        $msj = "Error consultando los items, por favor intente más tarde";
        $view = "../views/items.php";

        try {

            $dao = new CategoriaDao();
            $categoria = new Categoria();
            $id = 0;

            if (!isset($_POST["idCategoria"]) && isset($_SESSION['categoria'])) {
                $categoria = unserialize($_SESSION['categoria']);
                $id = $categoria->getId();
            } else {
                $id = $_POST["idCategoria"];
            }

            $categoria = $dao->getCatById($id);

            $_SESSION['categoria'] = null;
            if (isset($categoria)) {
                $_SESSION['categoria'] = serialize($categoria);
                $msj="";
            }
        } catch (Exception $e) {
            
        }

        $_SESSION['msj'] = $msj;
        return $view;
    }

    public function save() {

        session_start();

        $msj = "Error salvando el item";
        $estatus = AJAX_ERROR;
        $id = 0;

        try {

            $categoria = new Categoria();
            $categoria = unserialize($_SESSION['categoria']);

            $dao = new CategoriaDao();

            $item = new Item();
            $item->setId($_POST['id']);
            $item->setNombre(strtoupper($_POST['nombre']));
            $item->setCategoria($categoria);

            $copy = $dao->getItemByName($item->getNombre(), $categoria->getId());

            if ($item->getId() == 0) {
                if ($copy != null) {
                    $msj = "Ya existe un item con el mismo nombre, por favor verifique";
                    $item = null;
                } else {

                    $item = $dao->saveItem($item);
                }
            } else {
                if ($copy != null && $copy->getId() != $item->getId()) {
                    $msj = "Ya existe un item con el mismo nombre, por favor verifique";
                    $item = null;
                } else {
                    $item = $dao->updateItem($item);
                }
            }

            if (isset($item) && $item->getId() > 0) {
                $msj = "Item salvado satisfactoriamente";
                $estatus = AJAX_SUCCESSFUL;
                $id = $item->getId();
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus, 'id' => $id);

        return json_encode($responce);
    }

    public function query() {

        session_start();

        $responce = array('msj' => "Error consultando el item", 'estatus' => AJAX_ERROR);

        try {
            $dao = new CategoriaDao();

            $item = new Item();
            $item = $dao->getItemById($_POST['id']);

            if (isset($item)) {
                $responce = array('msj' => "",
                    'estatus' => AJAX_SUCCESSFUL,
                    'id' => $item->getId(),
                    'nombre' => $item->getNombre());
            }
        } catch (Exception $e) {
            
        }

        return json_encode($responce);
    }

    public function delete() {

        session_start();

        $msj = "Error eliminando el item";
        $estatus = AJAX_ERROR;

        try {
            $dao = new CategoriaDao();

            $item = new Item();
            $item = $dao->getItemById($_POST['id']);

            if (isset($item)) {
                $result = $dao->deleteItem($item);

                if ($result) {
                    $msj = "Item eliminado satisfactoriamente";
                    $estatus = AJAX_SUCCESSFUL;
                }
            }
        } catch (Exception $e) {
            
        }

        $responce = array('msj' => $msj, 'estatus' => $estatus);

        return json_encode($responce);
    }

}

?>